package com.Q04;

import com.common.TreeNode;

/**
 * @version v1.0.0
 * 创建时间：2022/7/1 13:28
 */
public class Q04_05 {

    public boolean isValidBST(TreeNode root) {
        // 中序遍历过程中，保证后一个大于前一个
        // 自底向上判断
        return recur(root,Long.MIN_VALUE,Long.MAX_VALUE);
    }

    private boolean recur(TreeNode root,long min,long max){
        if (root==null) return true;

        boolean left = recur(root.left,min,root.val);
        boolean right = recur(root.right,root.val,max);
        if (!left||!right||root.val<=min || root.val>=max){
            return false;
        }
        return true;
    }

    public static void main(String[] args) {
        System.out.println(new Q04_05().isValidBST(new TreeNode(Integer.MAX_VALUE)));
    }
}
